package 面试经典150题.哈希表;

import java.util.HashMap;
import java.util.Map;

/**
 * @author tmh
 * @date 2024/6/9 21:13
 * @description
 */
public class T205同构字符串 {
    public boolean isIsomorphic(String s, String t) {
        //只有s—>t的方向是一对一映射，同时t->s的方向是一对一映射的，那么s和t才是同构的
        return isIsomorphicHelper(s,t) && isIsomorphicHelper(t,s);
    }
    public boolean isIsomorphicHelper(String s, String t) {
        //判断长度是否是相同的 长度不是相同的 那么就肯定不是同构字符串
        if (s.length() != t.length()) {
            return false;
        }
        Map<Character, Character> map = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char c1 = s.charAt(i);
            char c2 = t.charAt(i);
            //看map里面是否存在c1的映射，如果存在，我们在判断c1的映射是否和c2是相同的
            if (map.containsKey(c1)) {
                if (map.get(c1) != c2) {
                    return false;
                }
            }else {
                map.put(c1, c2);
            }

        }
        return true;
    }
}
